package com.mb.ext.web.util;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.mb.ext.msg.HttpClientHelper;
import com.mb.framework.util.StringUtil;

import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;

public class HttpUtils {
    private final static String CHARSET_DEFAULT = "UTF-8";

    /**
     * 上传小程序发货
     *
     * @param mchId          商户号
     * @param outTradeNo     商户订单号
     * @param accessToken    accessToken
     * @param openid         买家openid
     * @param expressCompany 快递公司编码
     * @param trackingNo     快递单号
     * @return
     */
    public static String uploadShippingInfo(String mchId, String outTradeNo, String accessToken, String openid, String desc, String expressCompany, String trackingNo) {
        try {
//            URL url = new URL("https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=" + accessToken);
//            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//            conn.setRequestMethod("POST");
//            conn.setDoOutput(true);
//
//            // 设置请求头，如Content-Type
//            conn.setRequestProperty("application", "json");

            // 写入POST数据

            JSONObject orderKey = new JSONObject();
            // 订单单号类型，用于确认需要上传详情的订单。枚举值1，使用下单商户号和商户侧单号；枚举值2，使用微信支付单号。
            orderKey.put("order_number_type", 1);
            orderKey.put("mchid", mchId);
            //orderKey.put("transaction_id",transactionId);
            orderKey.put("out_trade_no", outTradeNo);

            JSONObject shippingList = new JSONObject();
            //商品信息
            shippingList.put("item_desc", desc);
            //物流单号，物流快递发货时必填
//            shippingList.put("tracking_no", trackingNo);
//            // 快递公司编码，物流快递发货时必填
//            shippingList.put("express_company", expressCompany);

            JSONObject payer = new JSONObject();
            payer.put("openid", openid);

            JSONObject signObject = new JSONObject();
            JSONArray shipping_list = new JSONArray();
            shipping_list.add(shippingList);

            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
            String uploadTime = simpleDateFormat.format(System.currentTimeMillis());

            signObject.put("order_key", orderKey);
            // 发货模式，发货模式枚举值：1、UNIFIED_DELIVERY（统一发货）2、SPLIT_DELIVERY（分拆发货） 示例值: 1
            signObject.put("delivery_mode", 1);
            // 物流模式，发货方式枚举值：1、实体物流配送采用快递公司进行实体物流配送形式 2、同城配送 3、虚拟商品，虚拟商品，例如话费充值，点卡等，无实体配送形式 4、用户自提
            signObject.put("logistics_type", 4);
            signObject.put("shipping_list", shipping_list);
            signObject.put("upload_time", uploadTime);
            signObject.put("payer", payer);
            System.out.println("发货信息：{}"+ signObject);
//            OutputStream os = conn.getOutputStream();
//            os.write(signObject.getBytes("UTF-8"));
//            os.close();
            String msg=	HttpClientHelper.postJsonObject("https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=" + accessToken, signObject.toJSONString());
            // 获取响应码
            System.out.println("POST Response Code :: " + msg);
            return msg;
            // 读取响应内容
//            if (msg == HttpURLConnection.HTTP_OK) {
//                System.out.println("POST Response Message :: " + conn.getResponseMessage());
//                // 处理响应数据
//                return conn.getResponseMessage();
//            } else {
//                System.out.println("POST not successful");
//                return String.valueOf(responseCode);
//            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;

    }
}
